package com.qst.survey.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qst.survey.entity.Admin;
import com.qst.survey.entity.Question;
import com.qst.survey.entity.User;
import com.qst.survey.entity.UserReply;
import com.qst.survey.vo.VM;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 用户服务类
 */
public interface UserService {
    /**
     * @param user ：用户
     * @return boolean
     * @description TODO 增加一个用户
     * @date 2021/4/2
     */
    public boolean addUser(User user);

    /**
     * @param user ：用户类
     * @return com.qst.survey.entity.User
     * @description TODO  用户登录方法
     * @date 2021/4/2
     */
    public User loginUser(User user);

    /**
     * @param username ：用户名
     * @return com.qst.survey.entity.User
     * @description TODO   通过用户名来查出一个用户
     * @date 2021/4/2
     */
    public User findOne(String username);

    /**
     * @param user 用户
     * @return com.qst.survey.entity.User
     * @description TODO 更新用户密码
     * @date 2021/4/2
     */
    public User updatePassword(User user);

    /**
     * @param email ：邮件
     * @return int
     * @description TODO 发送邮件验证码
     * @date 2021/4/2
     */
    public int sendEmailCode(String email);

    /**
     * @param page         ：分页类
     * @param queryWrapper ：Sql查询条件类
     * @return com.baomidou.mybatisplus.extension.plugins.pagination.Page
     * @description TODO   查出所有的数据
     * @date 2021/4/2
     */
    public Page findAll(Page page, QueryWrapper queryWrapper);

    /**
     * @param user 用户
     * @return boolean
     * @description TODO  更新一个用户的数据
     * @date 2021/4/2
     */
    public User updateUser(User user);

    /**
     * @param id 用户id
     * @return boolean
     * @description TODO 通过id来删除用户
     * @date 2021/4/2
     */
    public boolean removeUser(int id);

    /**
     * @param id ：用户id
     * @return com.qst.survey.entity.User
     * @description TODO  通过用户id来查出一个用户
     * @date 2021/4/2
     */
    public User findOneById(int id);

    /**
     * @param id ：用户id
     * @return com.qst.survey.entity.User
     * @description TODO  通过用户id来查出用户回答的投票
     * @date 2021/4/2
     */
    ArrayList<UserReply> findUserReply(int id);


    /**
     * 查找年龄比列
     * @return
     */
    List<VM> findAge(Integer id);

    /**
     * 查找性别比例
      * @param id
     * @return
     */
    List<VM> findSex(Integer id);

}
